The entire information technology infrastructure increasingly employs the concept of immutable objects to embrace the data and workload characteristics of the big data era. Simply speaking, an immutable object is an object whose state/content cannot be modified after it is created. A variety of mainstream data-intensive applications/services heavily rely on the use of immutable objects, e.g., cloud data storage, log-structured file (LSF) systems, and log-structured merge tree (LSM-tree) based key-value store. In almost all the cloud storage systems such as Google Cloud Storage and Microsoft Azure Cloud Services adopt the use of immutable objects as the basis to store user data and carry out back-end operations (e.g., erasure coding) on immutable objects. LSM-tree based key-value store has been widely used in production systems (e.g., HBase, Cassandra, BigTable, and LevelDB) to handle real-time and write-intensive data processing. One key feature of LSM-tree is to employ immutable objects in its data structure, and the data structure management is realized by immutable object based operations such as merge and sort.
Flash-based solid-state data storage devices/systems have been increasingly deployed throughout the entire information technology infrastructure. Due to the size mismatch between the block-based erase operation and page-based write operation, flash memory fundamentally does not support update-in-place. Hence, once data have been written to a flash memory block, this block can be essentially considered as an immutable object.